Micron Document
`:top
`!Cipher Block Chaining Mode`! (`!CBC Mode`!) ist eine `F33f`_`[Betriebsart`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Betriebsmodus_(Kryptographie)]`_`f, in der `F33f`_`[Blockchiffren`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Blockchiffre]`_`f betrieben werden können. Vor dem Verschlüsseln eines `F33f`_`[Klartextblocks`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Klartext_(Kryptographie)]`_`f wird dieser zunächst mit dem im vorhergehenden Schritt erzeugten `F33f`_`[Geheimtextblock`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Geheimtext]`_`f per `F33f`_`[XOR`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=XOR]`_`f (exklusives Oder) verknüpft. Der Modus wurde 1976 von William F. Ehrsam, Carl H. W. Meyer, John L. Smith und Walter L. Tuchman veröffentlicht.`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f]

>>Contents

• `F0af`_`[Allgemeines`#allgemeines]`_`f
• `F0af`_`[Beispiel`#beispiel]`_`f
• `F0af`_`[Verschlüsselung`#verschl-sselung]`_`f
• `F0af`_`[Entschlüsselung`#entschl-sselung]`_`f
• `F0af`_`[Integritätssicherung mit CBC, CBC-MAC`#integrit-tssicherung-mit-cbc-cbc-mac]`_`f
• `F0af`_`[Literatur`#literatur]`_`f
• `F0af`_`[Einzelnachweise`#einzelnachweise]`_`f

-─

>>Allgemeines

Die Struktur der Verschlüsselung im CBC-Modus ist in nachfolgender Abbildung dargestellt:

Man kann dieses Diagramm auch mathematisch in Formeln ausdrücken, bezeichne dazu E K {\\displaystyle E_{K}} die Verschlüsselungsfunktion mit dem Schlüssel K {\\displaystyle K} , sei D K {\\displaystyle D_{K}} die zugehörige Entschlüsselungsfunktion. Bezeichne P i {\\displaystyle P_{i}} den i-ten Klartextblock, C i {\\displaystyle C_{i}} den i-ten Geheimtextblock und sei I V {\\displaystyle IV} der Initialisierungsvektor; in der Regel wird C 0 = I V {\\displaystyle C_{0}=IV} definiert. Außerdem bezeichne ⊕ ⊕ {\\displaystyle \\oplus } das logische XOR. Dann ist die Verschlüsselung im CBC-Modus wie folgt `F33f`_`[rekursiv`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Rekursiv]`_`f definiert:

∀ ∀ i ∈ ∈ N + : C i = E K ( P i ⊕ ⊕ C i − − 1 ) {\\displaystyle \\forall i\\in \\mathbb {N} ^{+}:C_{i}=E_{K}(P_{i}\\oplus C_{i-1})}

Die Struktur der Entschlüsselung im CBC-Modus ist in nachfolgender Abbildung dargestellt:

Die zugehörige Entschlüsselung ist im CBC-Modus hingegen nicht rekursiv und lautet mit den gleichen Bezeichnungen wie oben:

∀ ∀ i ∈ ∈ N + : P i = D K ( C i ) ⊕ ⊕ C i − − 1 {\\displaystyle \\forall i\\in \\mathbb {N} ^{+}:P_{i}=D_{K}(C_{i})\\oplus C_{i-1}}

Als `F33f`_`[Initialisierungsvektor`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Initialisierungsvektor]`_`f (IV) benutzt man entweder einen `F33f`_`[Zeitstempel`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Zeitstempel]`_`f oder eine zufällige Zahlenfolge. Manche Anwendungen benutzen auch eine vorhersagbare, einfach aufsteigende Zahl, aber dies ist nicht sicher, weil fremde Personen unerwünscht einen `F33f`_`[Wasserzeichenangriff`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Wasserzeichenangriff]`_`f (`*watermark attack`*) auf solche Daten ausführen können. Das Modul `F33f`_`[dm-crypt`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Dm-crypt]`_`f benutzt zur Generierung des IV das `F33f`_`[ESS`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=ESSIV]`_`f-Verfahren.

Für die Sicherheit des `F33f`_`[Algorithmus`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Algorithmus]`_`f ist es nicht notwendig, den `F33f`_`[Initialisierungsvektor`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Initialisierungsvektor]`_`f geheim zu übertragen.

Der CBC-Mode hat einige wichtige Vorteile:

• Klartextmuster werden zerstört.
• Identische Klartextblöcke ergeben unterschiedliche Geheimtexte.
• Verschiedene Angriffe (Time-Memory-Tradeoff und Klartextangriffe) werden erschwert.
• Eine Umsortierung von Chiffratblöcken führt zu fehlerhaften Klartextblöcken.

Jedoch hat der CBC-Mode auch einige Nachteile:

• Die Verschlüsselung ist nicht parallelisierbar, da C i − − 1 {\\displaystyle C_{i-1}} bekannt sein muss, aber sehr wohl die Entschlüsselung.
• Bitfehler im Chiffrat multiplizieren sich beim Entschlüsseln im Klartext.
• Das Chiffrat ist veränderbar und annähernd XOR-homomorph.`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f]

Da ein Geheimtextblock nur von dem vorherigen Block abhängt, verursacht ein beschädigter Geheimtextblock, wie beispielsweise ein Bitfehler bei der Datenübertragung, beim Entschlüsseln keinen allzu großen Schaden: Der Klartextblock P i {\\displaystyle P_{i}} wird zerstört und im Klartextblock P i + 1 {\\displaystyle P_{i+1}} wird das respektive Bit negiert. Dies ist unmittelbar aus der Definition der Entschlüsselung und obiger Abbildung ersichtlich, da ein beschädigter Geheimtextblock C i {\\displaystyle C_{i}} nur die Klartextblöcke P i {\\displaystyle P_{i}} und P i + 1 {\\displaystyle P_{i+1}} beeinflusst und sich nicht unbeschränkt weiter verbreitet. Trotzdem kann diese beschränkte Vervielfachung nur eines einzigen Bitfehlers im `F33f`_`[Chiffrat`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Chiffrat]`_`f bei CBC eine `F33f`_`[Vorwärtsfehlerkorrektur`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Vorwärtsfehlerkorrektur]`_`f des Klartextes erschweren bzw. unmöglich machen. Genauso verursacht ein beschädigter Initialisierungsvektor beim Entschlüsseln keinen allzu großen Schaden, da dadurch nur der Klartextblock P 1 {\\displaystyle P_{1}} beschädigt wird.

Der CBC-Modus ist wesentlich sicherer als der `F33f`_`[ECB`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Electronic_Code_Book_Mode]`_`f-Modus, vor allem wenn man `*keine`* zufälligen Texte hat. Unsere Sprache und andere Dateien, wie z. B. Video-Dateien, sind keinesfalls zufällig, weswegen der ECB-Mode gefährlich ist.

>>Beispiel

`!Klartext`!
01 10
`!Aufgeteilt in Blöcke`!
01 = B 1 {\\displaystyle B_{1}} , 10 = B 2 {\\displaystyle B_{2}}
`!Schlüssel`!
11=k
`!Init. Vektor (IV)`!
01

Zur Vereinfachung wird als Verschlüsselungsfunktion E {\\displaystyle E} die `F33f`_`[binäre Addition`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Dualsystem]`_`f und als Entschlüsselungsfunktion D {\\displaystyle D} die binäre Subtraktion verwendet.

>>>Verschlüsselung

Block 1:

• B 1 ⊕ ⊕ I V = 01 ⊕ ⊕ 01 = 00 = C 1 ′ {\\displaystyle B_{1}\\oplus IV=01\\oplus 01=00=C_{1}'}
• E k ( C 1 ′ ) = C 1 ′ + k = 00 + 11 = 11 = C 1 {\\displaystyle E_{k}(C_{1}')=C_{1}'+k=00+11=11=C_{1}}

Block 2:

• B 2 ⊕ ⊕ C 1 = 10 ⊕ ⊕ 11 = 01 = C 2 ′ {\\displaystyle B_{2}\\oplus C_{1}=10\\oplus 11=01=C_{2}'}
• E k ( C 2 ′ ) = C 2 ′ + k = 01 + 11 = 00 = C 2 {\\displaystyle E_{k}(C_{2}')=C_{2}'+k=01+11=00=C_{2}}

Verschlüsselter Text:

• C 1 C 2 = 1100 {\\displaystyle C_{1}C_{2}=1100}

Betrachtet man die Verschlüsselung von B 2 {\\displaystyle B_{2}} , sieht man, dass dazu C 1 {\\displaystyle C_{1}} benötigt wird. Generell bedeutet das, dass für eine Verschlüsselung von B i {\\displaystyle B_{i}} der Chiffratblock C i − − 1 {\\displaystyle C_{i-1}} benötigt wird. Eine Parallelisierung des Verschlüsselungsvorgangs fällt damit aus.

>>>Entschlüsselung

Block 1:

• D k ( C 1 ) = C 1 − − k = 11 − − 11 = 00 = C 1 ′ {\\displaystyle D_{k}(C_{1})=C_{1}-k=11-11=00=C_{1}'}
• C 1 ′ ⊕ ⊕ I V = 00 ⊕ ⊕ 01 = 01 = B 1 {\\displaystyle C_{1}'\\oplus IV=00\\oplus 01=01=B_{1}}

Block 2:

• D k ( C 2 ) = C 2 − − k = 00 − − 11 = 01 = C 2 ′ {\\displaystyle D_{k}(C_{2})=C_{2}-k=00-11=01=C_{2}'}
• C 2 ′ ⊕ ⊕ C 1 = 01 ⊕ ⊕ 11 = 10 = B 2 {\\displaystyle C_{2}'\\oplus C1=01\\oplus 11=10=B_{2}}

Klartext:

• B 1 B 2 = 0110 {\\displaystyle B_{1}B_{2}=0110}

Betrachtet man die Entschlüsselung von C 2 {\\displaystyle C_{2}} , sieht man, dass B 1 {\\displaystyle B_{1}} dafür nicht benötigt wird, sondern lediglich C 1 {\\displaystyle C_{1}} . Generell bedeutet das, dass für eine Entschlüsselung von C i {\\displaystyle C_{i}} nur C i − − 1 {\\displaystyle C_{i-1}} benötigt wird. Damit ist eine Parallelisierung des Entschlüsselungsvorgangs möglich.

>>Integritätssicherung mit CBC, CBC-MAC

CBC kann auch zur Integritätssicherung benutzt werden, indem der Initialisierungsvektor auf null gesetzt und der letzte mit CBC verschlüsselte Block als `F33f`_`[MAC`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Message_Authentication_Code]`_`f (dem sogenannten CBC-MAC oder CBC-Restwert) an die ursprüngliche unverschlüsselte Nachricht angehängt und diese samt diesem MAC versandt wird.`:cite-ref-bkr-3-0[`F5bf`_`[3`#cite-note-bkr-3]`_`f] Der Empfänger kann mithilfe des CBC-Algorithmus den CBC-MAC der empfangenen Nachricht berechnen und nun vergleichen, ob der gerade selbst berechnete Wert mit dem an der Nachricht angehängten übereinstimmt. Falls eine mit CBC verschlüsselte Nachricht mit einem CBC-MAC gesichert werden soll, darf für die Generierung des CBC-MAC nicht derselbe Schlüssel verwendet werden wie für die Verschlüsselung. Würde derselbe Schlüssel verwendet, so wäre der MAC-Block gleich dem letzten Chiffratblock und ein Angreifer könnte unentdeckt die gesamte Nachricht mit Ausnahme des letzten Blocks verändern.

CBC-MAC ist nur für Nachrichten fester Länge sicher. Variiert die Nachrichtenlänge, kann das Verfahren durch `*Length-Extension`* angegriffen werden. Ein Angreifer kann aus zwei gültigen Nachricht-MAC-Paaren einen gültigen MAC für eine neue Nachricht (die Konkatenation der beiden Nachrichten) erzeugen. Zwei Modifikationen können diesen Angriff verhindern: Jeder Nachricht kann die Nachrichtenlänge vorangestellt werden oder der MAC-Block wird zusätzlich mit einem zweiten Schlüssel verschlüsselt.

>>Literatur

• Reinhard Wobst: Abenteuer Kryptologie. Methoden, Risiken und Nutzen der Datenverschlüsselung. 2., überarbeitete Auflage. Addison-Wesley Longman, Bonn u. a. 1998, ISBN 3-8273-1413-5.

>>Einzelnachweise

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f William F. Ehrsam, Carl H. W. Meyer, John L. Smith, Walter L. Tuchman, "Message verification and transmission error detection by block chaining", US-Patent 4074066, 1976
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f `*Practical malleability attack against CBC-Encrypted LUKS partitions | Jakob Lell's Blog.`* Abgerufen am 17. Februar 2022 (amerikanisches Englisch).
`:cite-note-bkr-3`!3.`! `F0af`_`[↑`#cite-ref-bkr-3-0]`_`f `F33f`_`[Mihir Bellare`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Mihir_Bellare]`_`f, Joe Kiliany, Phillip Rogaway: The Security of the Cipher Block Chaining Message Authentication Code. In: Journal of Computer and System Science. Band 61, Nr. 3, 2000, S. 362–399 (cs.ucdavis.edu (`F33f`_`[Memento`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Webarchivierung]`_`f vom 5. Februar 2012 im `*`F33f`_`[Internet Archive`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Internet_Archive]`_`f`*) [PDF; 466 kB]).

`c`F0af`_`[↑ Back to top`#top]`_`f`a